#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
#include <stdlib.h>


//int main()
//{
//	int a = 1;
//	int b = 2;
//	int c = 3;
//	printf("%d ", ++a + b * ++b + c);
//	return 0;
//}

//#define a 10
//
//void foo()
//{
//	#undef a
//	#define a 50
//}
//
//int main()
//{
//	printf("%d..", a);
//	foo();
//	printf("%d", a);
//	return 0;
//} 


//int main() {
//    int n, z;
//    int capacity = 2;
//    long long* arr = malloc(sizeof(long long) * capacity);
//    arr[0] = 1;
//    arr[1] = 2;
//    scanf("%d", &n);
//    for (int i = 0; i < n; i++)
//    {
//        scanf("%d", &z);
//        if (capacity < z)
//        {
//            arr = realloc(arr, sizeof(long long) * z);
//            for (int j = capacity; j < z; j++)
//            {
//                arr[j] = 2 * arr[j - 1] + arr[j - 2];
//            }
//            capacity = z;
//            printf("%d\n", arr[z - 1] % 32767);
//        }
//        else
//        {
//            printf("%d\n", arr[z - 1] % 32767);
//        }
//    }
//    return 0;
//}


int main()
{
    char arr[1001];
    int count1 = 0;
    int count2 = 0;
    int count3 = 0;
    int count4 = 0;
    gets(arr);
    for (int i = 0; arr[i] != '\0'; i++)
    {
        if (arr[i] <= 'Z' && arr[i] >= 'A' || arr[i] <= 'z' && arr[i] >= 'a')
        {
            count1++;
        }
        else if (arr[i] == ' ')
        {
            count2++;
        }
        else if (arr[i] <= '9' && arr[i] >= '0')
        {
            count3++;
        }
        else
        {
            count4++;
        }
    }
    printf("%d\n", count1);
    printf("%d\n", count2);
    printf("%d\n", count3);
    printf("%d\n", count4);
    return 0;
}